package com.uls.ycl.domain;

import java.util.Date;
import java.util.List;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.uls.ycl.vo.TaskCommentVo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.uls.common.annotation.Excel;
import com.uls.common.core.domain.BaseEntity;

/**
 * 报修请求对象 ycl_repair_request
 * 
 * @author ycl
 * @date 2024-11-06
 */
public class RepairRequest extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 报修请求ID */
    private Long requestId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 报修区域ID */
    @Excel(name = "报修区域ID")
    private Long areaId;

    /** 故障描述 */
    @Excel(name = "故障描述")
    private String description;

    /** 故障位置 */
    @Excel(name = "故障位置")
    private String location;

    /** 材料ID */
    @Excel(name = "材料ID")
    private Long materialId;

    /** 紧急程度（如紧急、一般、低优先级） */
    @Excel(name = "紧急程度", readConverterExp = "如=紧急、一般、低优先级")
    private String urgency;

    /** 报修状态（如待处理、已分配、正在维修、已完成等） */
    @Excel(name = "报修状态", readConverterExp = "如=待处理、已分配、正在维修、已完成等")
    private Integer status;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
    private Date updatedAt;

    /** 实例id */
    @Excel(name = "实例id")
    private Long flowInstantId;

    /** 图片 */
    @Excel(name = "图片")
    private String picture;


    //下面为改造
    @Excel(name = "用户名称")
    private String userName;

    /** 区域名称 */
    @Excel(name = "区域名称")
    private String areaName;

    //是否同意vo
    private Integer agree;
    //批注vo
    private String comment;

    //审批过程数据列表vo
    private List<TaskCommentVo> taskCommentVoList;
    /** 维修人员ID */
    private Long personnelId;
    @Excel(name = "姓名")
    private String name;

    @Excel(name = "材料名称")
    private String Mname;

    public String getMname() {
        return Mname;
    }

    public void setMname(String mname) {
        Mname = mname;
    }

    public Integer getAgree() {
        return agree;
    }

    public void setAgree(Integer agree) {
        this.agree = agree;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public List<TaskCommentVo> getTaskCommentVoList() {
        return taskCommentVoList;
    }

    public void setTaskCommentVoList(List<TaskCommentVo> taskCommentVoList) {
        this.taskCommentVoList = taskCommentVoList;
    }

    public Long getPersonnelId() {
        return personnelId;
    }

    public void setPersonnelId(Long personnelId) {
        this.personnelId = personnelId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getAreaName() {
        return areaName;
    }

    public void setAreaName(String areaName) {
        this.areaName = areaName;
    }

    public void setRequestId(Long requestId)
    {
        this.requestId = requestId;
    }

    public Long getRequestId() 
    {
        return requestId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setAreaId(Long areaId) 
    {
        this.areaId = areaId;
    }

    public Long getAreaId() 
    {
        return areaId;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setLocation(String location) 
    {
        this.location = location;
    }

    public String getLocation() 
    {
        return location;
    }

    public Long getMaterialId() {
        return materialId;
    }

    public void setMaterialId(Long materialId) {
        this.materialId = materialId;
    }

    public void setUrgency(String urgency)
    {
        this.urgency = urgency;
    }

    public String getUrgency() 
    {
        return urgency;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }
    public void setFlowInstantId(Long flowInstantId) 
    {
        this.flowInstantId = flowInstantId;
    }

    public Long getFlowInstantId() 
    {
        return flowInstantId;
    }
    public void setPicture(String picture) 
    {
        this.picture = picture;
    }

    public String getPicture() 
    {
        return picture;
    }

    @Override
    public String toString() {
        return "RepairRequest{" +
                "requestId=" + requestId +
                ", userId=" + userId +
                ", areaId=" + areaId +
                ", description='" + description + '\'' +
                ", location='" + location + '\'' +
                ", materialId=" + materialId +
                ", urgency='" + urgency + '\'' +
                ", status=" + status +
                ", createdAt=" + createdAt +
                ", updatedAt=" + updatedAt +
                ", flowInstantId=" + flowInstantId +
                ", picture='" + picture + '\'' +
                ", userName='" + userName + '\'' +
                ", areaName='" + areaName + '\'' +
                ", agree=" + agree +
                ", comment='" + comment + '\'' +
                ", taskCommentVoList=" + taskCommentVoList +
                ", personnelId=" + personnelId +
                ", name='" + name + '\'' +
                ", Mname='" + Mname + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        RepairRequest that = (RepairRequest) o;
        return Objects.equals(requestId, that.requestId) && Objects.equals(userId, that.userId) && Objects.equals(areaId, that.areaId) && Objects.equals(description, that.description) && Objects.equals(location, that.location) && Objects.equals(materialId, that.materialId) && Objects.equals(urgency, that.urgency) && Objects.equals(status, that.status) && Objects.equals(createdAt, that.createdAt) && Objects.equals(updatedAt, that.updatedAt) && Objects.equals(flowInstantId, that.flowInstantId) && Objects.equals(picture, that.picture) && Objects.equals(userName, that.userName) && Objects.equals(areaName, that.areaName) && Objects.equals(agree, that.agree) && Objects.equals(comment, that.comment) && Objects.equals(taskCommentVoList, that.taskCommentVoList) && Objects.equals(personnelId, that.personnelId) && Objects.equals(name, that.name) && Objects.equals(Mname, that.Mname);
    }

    @Override
    public int hashCode() {
        return Objects.hash(requestId, userId, areaId, description, location, materialId, urgency, status, createdAt, updatedAt, flowInstantId, picture, userName, areaName, agree, comment, taskCommentVoList, personnelId, name, Mname);
    }
}
